package typydanych;

public class Obrazek {

	public static final int ROZMIAR = 28;
	private int[][] obrazek;
	private ObszarCyfry obszarCyfry = null;
	
	public Obrazek(){
		obrazek = new int[ROZMIAR][ROZMIAR];
	}
	
	public boolean czyNieTlo(int x, int y, int prog) {
		if (get(x, y) > prog) {
			return true;
		}
		return false;
	}
	
	public boolean czyWObszarzeObrazka(int x, int y) {
		if (x < 0 || y < 0 || x >= ROZMIAR || y >= ROZMIAR) {
			return false;
		} else {
			return true;
		}
	}
	
	public int get(int x, int y){
		return obrazek[y][x];
	}

	@Deprecated
	public int[][] getObrazek() {
		return obrazek;
	}

	public ObszarCyfry getObszarCyfry(){
		if(obszarCyfry == null){
			obszarCyfry = okreslObszarCyfry();
		}
		return obszarCyfry;
	}
	
	private ObszarCyfry okreslObszarCyfry() {
		ObszarCyfry obszarCyfry = new ObszarCyfry();
		
		for(int y = 0; y < ROZMIAR; y++){
			for(int x = 0; x < ROZMIAR; x++){
				if(get(x,y) > 0){
					obszarCyfry.setDol(y);
				}
			}
		}
		
		for(int y = ROZMIAR-1; y > -1; y--){
			for(int x = ROZMIAR-1; x > -1; x--){
				if(get(x,y) > 0){
					obszarCyfry.setGora(y);
				}
			}
		}
		
		return obszarCyfry;
	}
	
	public void set(int x, int y, int value){
		obrazek[y][x] = value;
	}
	
	@Override
	public String toString() {
		StringBuilder str = new StringBuilder("Obrazek:\r\n");
		
		for(int x = 0; x < Obrazek.ROZMIAR; x++){
			for(int y=0; y<Obrazek.ROZMIAR; y++){
				if(getObrazek()[x][y] < 10){
					str.append(getObrazek()[x][y]).append("  ").append("  ");
				}else if(getObrazek()[x][y] < 100){
					str.append(getObrazek()[x][y]).append(" ").append("  ");
				}
				else
					str.append(getObrazek()[x][y]).append("  ");
			}
			str.append("\r\n");
		}
		
		return str.toString();
	}
}
